package com.qf.blog.listener;

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 *
 * @author zyt
 * @version 1.0
 */
// 这个是一个监听器
// 项目启动的时候给上下文域对象中放到了模板引擎对象

@WebListener
public class ThymeleafListener implements ServletContextListener {
     private  static final String TEMPLATE_ENGINE_INST= "com.ts.thymeleaf.TemplateEngine";
     // 模板引擎对象作用：使用模板引擎提供的模板语法，可以将数据和HTML拼接起来

     // 从上下文的域对象中获取模板引擎对象
     public static TemplateEngine getTemplateEngine(ServletContext context){

          return (TemplateEngine) context.getAttribute(TEMPLATE_ENGINE_INST);
     }
     public void  contextInitialized(ServletContextEvent sce){
               // 1. 获取上下文的域对象
          ServletContext servletContext = sce.getServletContext();

               // 2. 创建一个模板解析对象 来解析模板的属性
          ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
          templateResolver.setTemplateMode(TemplateMode.HTML);  // 设置html模式
          templateResolver.setPrefix("/WEB-INF/templates/"); // 设置视图模板的前缀
          templateResolver.setSuffix(".html") ; // 设置试图模板的后缀
          templateResolver.setCacheable(false); // 是否开启缓存
          templateResolver.setCharacterEncoding("utf8");  //设置编码
          // 3. 创建一个模板引擎对象 来做视图分析
          TemplateEngine te = new TemplateEngine();
          te.setTemplateResolver(templateResolver);
          // 4.把模板引擎对象放到上下文的域对象中
          servletContext.setAttribute(TEMPLATE_ENGINE_INST,te);


     }
      // 销毁的方法
     public void contextDestroyed(ServletContextEvent sce){
     }

}
